package com.tom.architect.day16.simple3;

import android.util.Log;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class DarrenRetrofit {

    public <T> T create(Class<T> clazz) {
        // 动态代理, 每个接口都会进来直行invoke()方法。
        return (T) Proxy.newProxyInstance(clazz.getClassLoader(),
                new Class<?>[]{clazz},
                new InvocationHandler() {
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                        Log.d("TAG", "method name:" + method.getName()); // 方法名字。
                        // 执行方法 userLogin()
                        // **如何实现Retrofit一样的代码？**
                        // 1.解析方法的所有注解：比如@POST，GET，FormUrlEncoded等
                        // 2.解析参数的所有注解：比如@FieldMap，Part，PartMap等
                        // 3.封装成Call 对象，



                        // 4.返回的Call对象，应该是Call<T>
                        return "back msg";
                    }
                }
        );
    }


}
